iT邦幫忙

2023 iThome 鐵人賽

DAY 23
0
Mobile Development

[Android Studio & Spring boot 30天挑戰]系列 第 23

[Android Studio & Spring boot 30天挑戰] Day23- Spring 三層式架構

  • 分享至 

  • xImage
  •  

今天要介紹的是Spring 三層式架構。三層式架構是一種常見的軟體架構,通常用於Spring應用程序的設計和開發。這種架構將應用程序分為三個主要層次:控制器(Controller)、服務(Service)、和存儲(Repository)層。每個層次都有其特定的職責,使代碼更有組織性、可維護性和可擴展性。

什麼是Spring 三層式架構?

以下是這三個層次的詳細說明:

1. 控制器(Controller)層:

  • 控制器層處理用戶的HTTP請求,並負責路由這些請求到適當的處理程序。
  • 它接收HTTP請求,解析請求參數,調用相應的服務方法,然後將結果返回給客戶端(通常是JSON或HTML等格式)。
  • 控制器層通常使用Spring MVC或Spring WebFlux框架來實現。

2. 服務(Service)層:

  • 服務層包含應用程序的業務邏輯。
  • 它處理控制器層傳遞的請求,執行相應的業務邏輯,並協調不同的存儲層操作。
  • 服務層通常是無狀態的,並且可以被不同的控制器方法重複使用。

3. 存儲(Repository)層:

  • 存儲層負責與數據存儲(通常是數據庫)進行交互。
  • 它包含用於執行數據操作的方法,例如查詢、插入、更新和刪除數據。
  • 存儲層通常使用Spring Data JPA、Hibernate或其他數據存取框架實現。

實作部分

1. 創建控制器類(Controller Class)

控制器類負責處理HTTP請求和向客戶端返回響應。你可以創建一個控制器類來定義不同的請求處理方法,並調用服務類來執行業務邏輯。

@RestController
@RequestMapping("/api")
public class UserController {
    @Autowired
    private UserService userService;

    @PostMapping("/user")
    public ResponseEntity<String> addUser() {
        return ResponseEntity.ok(userService.registerUser());
    }
}

2. 創建服務類(Service Class)

服務類是用於實現業務邏輯的地方。你可以創建一個服務類來執行與用戶相關的業務操作,例如註冊、登錄、查詢等。

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;
    public String registerUser() {
        User user = new User();
        user.setName("chocolee");
        userRepository.save(user);
        return "success";
    }
}

3. 創建存儲庫介面(Repository Interface)

接下來,你需要創建一個存儲庫介面,它擴展了Spring Data JPA的JpaRepository介面。這個介面將幫助你執行數據庫操作,如查詢、插入、更新和刪除數據。

@Repository
public interface UserRepository extends JpaRepository<User, Long> {

}

最後一樣用 Postman 去打 API,並到資料庫查看!!!/images/emoticon/emoticon01.gif
https://ithelp.ithome.com.tw/upload/images/20230824/20150369HOLOGEtbNP.png


上一篇
[Android Studio & Spring boot 30天挑戰] Day22 - H2 DataBase
下一篇
[Android Studio & Spring boot 30天挑戰] Day24- 各種請求標籤
系列文
[Android Studio & Spring boot 30天挑戰]30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言